<?php
header('Content-type:text/html;charset=utf-8');
/**
 * 
 * @authors Your Name (you@example.org)
 * @date    2015-05-29 20:23:39
 * @version $Id$
 */

// strlen — 获取字符串长度 

$a='中华人民共和国';
$b='iikkiah8egihohgl';
// 如果不转换成utf-8的话  中文字符算3个长度  
echo strlen($a).'<br/>';//长度：21
echo strlen($b).'<br/>';//长度：16
// 获取中文字符串的长度 第1个对数字符串，第2个就是编码  
echo mb_strlen($a,'utf8').'<br/>';//长度：3

echo '<hr/>';


//trim — 去除字符串首尾处的空白字符
// ltrim — 删除字符串开头的空白字符
// rtrim — 删除字符串末端的空白字符（或者其他字符）

$d=' hyehfyhe ';
echo trim($d).'<br/>';
echo strlen($d).'<br/>';
echo strlen(trim($d)).'<br/>';
echo "删除左边的空白：";
echo ltrim($d).'<br/>';
echo strlen(ltrim($d)).'<br/>';
echo "删除右边的空白";
echo rtrim($d).'<br/>';
echo strlen(rtrim($d)).'<br/>';

echo '<hr/>';

// ucwords — 将字符串中每个单词的首字母转换为大写 

$e = 'hejyhdjuj zhongguo xianyinyan liuxiaoan';
echo ucwords($e);

echo '<hr/>';

// md5 — 计算字符串的 MD5 散列值 
// $h='houdunwang.com';
// echo md5($h).'<br/>';

// 登陆密码：houdun888
$password = 'houdun888';
// 利用时间戳 随机生成密码口令 
$key = mt_rand().time();
// 用md5加密key
$k = md5($key);
// 返回用md5加密好的 随机密码
echo $k;

echo '<hr>';

echo substr($k,5,10).'<br/>';





// 字符的拆分
// 设置一个字符
$g = '#$@#abd*&^#@';
// explode — 使用一个字符串分割另一个字符串 
//第一个参数 是要分割的字符  第二个参数是 要分割的变量名
$arr = explode('@',$g);

$aa = explode('&',$g);

print_r($arr);
echo '<hr/>';
echo $arr[1];
echo '<hr/>';
print_r($aa).'<br/>';
echo '<hr/>';
echo $aa[0];
echo '<hr/>';



// implode — 将一个一维数组的值转化为字符串 将数组里面的值串联起来

$arr = array(
	2=>'1.jpg',
	4=>'2.jpg'

	);

echo implode('#@@@@@@@@#@',$arr);

echo '<hr/>';

// substr() —截取字符串 同时能截取中文
// 截取中文需要用到  同时它的最后一个参数需要 写成 utf8 mb_substr()

$f = 'luqinsheng';

echo $f.'<br/>';

echo substr($f,3,5).'<br/>';

$h = '中华人民共和国';

echo mb_substr($h,3,4,'utf8');


echo '<hr/>';

// strrchr 查找指定字符在字符串中的最后一次出现
// 截取到的是 从截取的字符开始 一直到字符串的结尾 如：

echo strrchr($f,'s');

echo '<hr/>';



// strpos — 查找字符串首次出现的位置 

$j='BBs.houdunwang.Com';

// '.'首次出现在第三个的位置上
var_dump(strpos($j,'.'));

if(strpos($j,'$$')!==false){
	echo 'ok';
}else{
	echo 'no';
}

echo '<hr/>';




// str_replace — 子字符串替换 第一个参数为 需要替换的目标值  第二个参数为需要用来替换的值 第三个参数为需要替换的变量名  

 //替换  str_replace区分大小写  

echo str_replace('bbs','www',$j).'<br/>';

// str_ireplace不区分大小写

echo str_ireplace('BBs','www',$j).'<br/>';

echo '<hr/>';



// urldecode — 解码已编码的 URL 字符串

// 判断所传入的超链接  是否存在  如果传入的超级链接 存在那么把传入的超级链接解码

if(isset($_GET['link']))
{
	// 解码已编码的link
	
	echo urldecode($_GET['link']).'<br/>';

	// 编码已有的链接
	echo urlencode($_GET['link']).'<br/>';
}

?>
<!-- 把超级链接进行编码 -->
<a href="?link=<?php echo urlencode('http://www.baidu.com');?>">link</a>


<?php
echo '<hr/>';
//addslashes — 使用反斜线引用字符串
// 在某些字符前加上了反斜线。这些字符是单引号（'）、双引号（"）、反斜线（\）与 NUL（ NULL  字符）。 

$l = "bbs.houd'unwa'ng.com";
// 增加转义字符
echo addslashes($l).'<br/>';

// 删除转义字符
echo stripslashes($l);


echo '<hr/>';

// strip_tags — 从字符串中去除 HTML 和 PHP 标记 

$k = <<<kk

<a style="font-size:30px" href="">后盾网 人人做后盾</a>


kk;
echo $k;

//去除字符串中的Html标签
echo strip_tags($k);

echo '<hr/>';


// 13、 18、检测文件是为图片

//jpg  gif  jpeg  png  bmp
function checkImg($file){

// 方法一：

// 查找字符串'.'首次出现的位置 然后从'.'的地方开始 把后面的全部显示显示出来

	// $ext = strrchr($file, '.');

	// echo($ext);

	// // 将字符串  转化成小写

	// $ext = strtolower($ext);

	// return $ext=='.jpg' || $ext =='.jpeg' 
	// 	|| $ext =='.gif' || $ext=='.png';

// 方法二：

// 从右边查找.的位置

	// $index = strrpos($file, '.');


	// // 得到扩展名

	// $eec = substr($file,$index+1);


	// $eec = strtolower($eec);

	// return $eec=='.jpg' || $eec =='.jpeg' 
	// 	|| $eec =='.gif' || $eec=='.png';

	// echo($eec);


// 方法三：

// 首先创建一个数组

	$type = array('.jpg','.gif','.jpeg','.bmp','.doc','.text');

// 查找字符串'.'首次出现的位置 然后从'.'的地方开始 把后面的全部显示显示出来

	$exx = strrchr($file, '.');

	// 将字符串  转化成小写

	$exx = strtolower($exx);

	// 检查数组中是否存在某个值

	return in_array($exx,$type);



}

var_dump(checkImg('2.text'));



echo '<hr/>';

///14、设置一个数组

// $stu = array(

// 	array(
// 		'name'=>'zhangsan',
// 		'age'=>'28',

// 	),
// 	6=>array(
// 		'name'=>'lisi',
// 		'age'=>'29',
// 	),

// );
// // 获取键名为6的数组里面的name的元素
// echo  $stu[6]['name'];


// 15、遍历数组

$stu = require 'db.php';

var_dump($stu);

//$stu 必须是数组类型
//$ls 键名 就是数组里面的下标
//$lis 键值 数组里面的 每一项的名字

// 遍历当前数组  输出 数组里面的每组的下标 和 数组里面的指定的项目名字

foreach ($stu as $ls => $lis) {
	// 遍历键名自增1

	$ls++;

	echo "id:{$ls} <br/> age:{$lis['age']}";

}

echo '<hr/>';
// 16、数组

$date = array(

	0=>'a',
	1=>'b',
	2=>'c',
	3=>'d',
	4=>'e',
	5=>'f',
	6=>'g',
	7=>'h',


	);

// key() 返回数组中当前单元的键名

//next() 数组指针向下移动一位

 // current()取值


echo key($date).'<br/>';
next ($date);
echo key($date).'<br/>';
next ($date);
echo key($date).'<br/>';
next ($date);
echo key($date).':';
echo current($date).'<br/>';
next ($date);
next ($date);
next ($date);
echo key($date).':';
echo current($date);



// 17、使用key current 函数循环数组

// 引入数组所在的php文件 
$dd = require 'db.php';

// 首先需要创建一个表格

echo '<table border="2" border-color="blue">';
echo '<tr>
		<td>姓名</td>
		<td>年龄</td>
		<td>籍贯</td>
		<td>性别</td>
	</tr>';

// 开始判断  每取一次数组里面的值 就把指针往下移一位 
//利用current 抓取数组里面的值  然后存到一个变量里面 
// 利用do  while 循环取值 先取值 当取到值后  把指针往下移一位 然后再循环
do{
	// 取值 取键值
	$date = current($dd);
	//把取好的值放到表格里面
	echo "<tr>
			<td>{$date['name']}</td>
			<td>{$date['age']}</td>
			<td>{$date['native']}</td>
			<td>{$date['sex']}</td>
		</tr>";
	// echo "<tr><td>{$date['age']}</td></tr>";
	// 放到表格里面后 里面的指针转到数组里面的下个值
}while(next($dd));

echo '</table>';
// count — 计算数组中的单元数目或对象中的属性个数 
echo "<h1>count：".count($dd)."</h1>";

echo '<hr/>';


// 19、

function ruun($file,$size){

	// 获取文件的信息 以文件的形式返回
	$info = pathinfo($file);

	$eee = $info['extension'];

	$allow = array(
		'jpeg'=>200,
		'gif'=>300,

		);

	// 检查类型是否合法  array_key_exists — 检查给定的键名或索引是否存在于数组中 

	if(array_key_exists($eee,$allow))
	{
		return $size<=$allow[$eee];
	}

		return $false;
}
	var_dump(ruun('a/b/c/1.jpeg',210));



// 20、

// function filter($stu){

// 	return $['age'] > 30;



// }


// 21、向数组压入新元素

$arr = array('abc');
$arr[0]='a';
$arr[1]='b';

// 打印变量
print_r($arr).'<br/>';



// 22、通过回调函数往数组中添加元素


// array_map — 将回调函数作用到给定数组的单元上 

// 引入数组所在的php文件

$ddd = require 'db.php';

// 新建一个函数 用来添加数组

function arr($s){
	// 定义一个数组 往里面加内容
	$s['date'] = '***';
	// 在把它的值返回
	return $s;
}

// 调用函数  回调函数 把回调的函数赋值到 $ddd 里面的数组中

$ddd = array_map('arr',$ddd);

// 打印输出数组
print_r($ddd);

echo '<hr/>';


// 23、通过字面量的形式往数组中添加元素



// 首先创建一个数组

$aqq = array('baidu.com');

// 网数组中压入元素的方法：

// 一：使用字面量的形式向数组中压入元素
$aqq[] = 'sohu.com';
// 打印输出数组
print_r($aqq);

echo '<hr/>';
// 二、通过函数的形式向数组中压入元素

// array_push — 将一个或多个单元压入数组的末尾（入栈） 
// 第一个参数为 需要压入的目标数组  第二个参数为需要压入的元素

array_push($aqq,'houdunwang.com');

// 打印输出
print_r($aqq);

echo '<hr/>';
// array_pop — 将数组最后一个单元弹出（出栈） 

$w = array_pop($aqq);
echo $w.'<br/>';
print_r($aqq);

?>

